﻿using System;
using System.Collections.Generic;
using System.Text;
using static PEUtils.LogColor;

namespace PEUtils
{
    //Unity端使用的日志输出器
    class UnityLogger : ILogger
    {
        Type type = Type.GetType("UnityEngine.Debug, UnityEngine");
        public void Log(string msg, LogColor color = LogColor.None)
        {
            if (color != LogColor.None)
            {
                msg = ColorUnityLog(msg, color);
            }
            type.GetMethod("Log", new Type[] { typeof(object) }).Invoke(null, new object[] { msg });
        }
        public void Warn(string msg)
        {
            type.GetMethod("LogWarning", new Type[] { typeof(object) }).Invoke(null, new object[] { msg });
        }
        public void Error(string msg)
        {
            type.GetMethod("LogError", new Type[] { typeof(object) }).Invoke(null, new object[] { msg });
        }
        private string ColorUnityLog(string msg, LogColor color)
        {
            switch (color)
            {
                case Red:
                    msg = $"<color=#FF0000>{msg}</color>";
                    break;
                case Orange:
                    msg = $"<color=#FF8400>{msg}</color>";
                    break;
                case Yellow:
                    msg = $"<color=#FFFF00>{msg}</color>";
                    break;
                case Green:
                    msg = $"<color=#00FF00>{msg}</color>";
                    break;
                case Cyan:
                    msg = $"<color=#00FFFF>{msg}</color>";
                    break;
                case Blue:
                    msg = $"<color=#0000FF>{msg}</color>";
                    break;
                case Magenta:
                    msg = $"<color=#FF00FF>{msg}</color>";
                    break;
                case Gray:
                    msg = $"<color=#bbbbbb>{msg}</color>";
                    break;
                case None:
                default:
                    break;
            }
            return msg;
        }
    }
}
